home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Dev / powerd / lib / powerd_lib.lha / PowerD / DupEStrPooled.ass < prev    next >
Encoding:
Text File  |  2000-02-29  |  535 b   |  33 lines

  1. ; a0 - pool
  2. ; a1 - source estring
  3.  
  4.     xdef    _DupEStrPooled
  5.  
  6. _DupEStrPooled
  7.     movem.l    d1-d3/a0-a2/a6,-(a7)
  8.     move.l    a1,d3
  9.     moveq    #0,d2
  10.     move.w    (-2,a1),d2
  11.     move.l    d2,d0
  12.     addq.l    #6,d0        ; header + zero byte
  13.     move.l    d2,-(a7)
  14.     movea.l    $4.w,a6
  15.     jsr    (-708,a6)        ; AllocPooled()
  16.     move.l    (a7)+,d1
  17.     tst.l    d0
  18.     beq.s    .exit
  19.     move.l    d0,a0
  20.     moveq    #16,d0
  21.     lsl.l    d0,d1        ; max, len=0
  22.     move.l    d1,(a0)+
  23.     move.l    a0,d0
  24.  
  25.     move.l    d3,a2
  26. .loop    move.b    (a2)+,(a1)+    ; copy src to dst
  27.     bne.s    .loop
  28.     suba.l    a0,a1
  29.     move.w    a1,(-2,a0)
  30.  
  31.     movem.l    (a7)+,d1-d3/a0-a2/a6
  32. .exit    rts
  33.